﻿using System.Net;
using T0yK4T.Tools;

namespace ToyChat
{
    /// <summary>
    /// This interface describes a common set of properties needed to connect to a server
    /// </summary>
    public interface IConnectionSettings : IValidatable
    {
        /// <summary>
        /// Gets or Sets the nickname for the connection (The user's nickname on the server)
        /// </summary>
        string Nickname { get; set; }

        /// <summary>
        /// Gets or Sets the users username for the connection
        /// </summary>
        string Username { get; set; }

        /// <summary>
        /// Gets or Sets the users password for the connection
        /// </summary>
        string Password { get; set; }

        /// <summary>
        /// Gets or Sets the remote hostname of the server to connect to
        /// </summary>
        string RemoteAddress { get; set; }

        /// <summary>
        /// Gets or Sets the remote port to connect to
        /// </summary>
        ushort RemotePort { get; set; }

        /// <summary>
        /// Gets or Sets a value indicating wether or not to attempt registration instead of authentication
        /// </summary>
        bool Register { get; set; }

        /// <summary>
        /// The user's email address (this need not be set unless <see cref="Register"/> is true)
        /// </summary>
        string Email { get; set; }
    }
}